package com.lekang.dto;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName CheckInManageDto
 * @Description TODO
 * @Author wangjinyuan
 * @Date 2025年10月20日 9:53
 * @Version 1.0
 */
public class CheckInManageDto {
    // ======================== 1. 主表：check_in_management 字段 ========================
    private Long id;                     // 主键ID
    private String checkInNo;            // 入住编号
    private Long elderlyId;              // 老人外键编号
    private String checkInStartTime;     // 入住开始时间
    private String checkInEndTime;       // 入住结束时间
    private Long creator;                // 创建人ID
    private Date createTime;             // 创建时间
    private Long nursingLevelId;         // 护理等级ID
    private Long bedId;                  // 床位ID
    private Date feeStartDate;           // 费用开始日期
    private Date feeEndDate;             // 费用结束日期
    private BigDecimal deposit;          // 押金
    private BigDecimal nursingFee;       // 护理费用
    private BigDecimal bedFee;           // 床位费用
    private BigDecimal otherFee;         // 其他费用
    private BigDecimal medicalInsurancePayment; // 医保支付
    private BigDecimal governmentSubsidy; // 政府补贴
    private Long businessId;             // 业务ID
    private String extraField1;          // 额外字段1
    private String extraField2;          // 额外字段2

    // ======================== 2. 关联表：elderly（老人表）字段 ========================
    private String elderlyName;          // 老人姓名（SQL别名：elderly_name）
    private String elderlyIdCard;        // 老人身份证号（SQL别名：elderly_id_card）

    // ======================== 3. 关联表：bed（床位表）字段 ========================
    private String bedNo;                // 床位编号（SQL别名：bed_no）

    // ======================== 4. 关联表：sys_user（系统用户表）字段 ========================
    private String creatorNickName;      // 创建人昵称（SQL别名：creator_nick_name）

    // ======================== 5. 关联表：health_assessment（健康评估表）字段 ========================
    private String diseaseDiagnosis;     // 疾病诊断（SQL别名：disease_diagnosis）
    private String medicationInfo;       // 用药情况（SQL别名：medication_info）
    private String haSelfCareAbility;    // 自理能力（健康评估中，SQL别名：ha_self_care_ability）
    private String haAssessmentStatus;   // 健康评估状态（SQL别名：ha_assessment_status）
    private Date haCreateTime;           // 健康评估创建时间（SQL别名：ha_create_time）
    private String riskFactors;          // 风险因素（补充常用字段）
    private String woundCondition;       // 伤口情况（补充常用字段）

    // ======================== 6. 关联表：ability_assessment（能力评估表）字段 ========================
    private String aaSelfCareAbility;    // 自理能力评估（能力评估中，SQL别名：aa_self_care_ability）
    private String mentalStatus;         // 精神状态评估（SQL别名：mental_status）
    private String perceptionSocialParticipation; // 感知觉与社会参与（SQL别名：perception_social_participation）
    private String aaAssessmentStatus;   // 能力评估状态（SQL别名：aa_assessment_status）

    // ======================== 7. 关联表：assessment_report（评估报告表）字段 ========================
    private BigDecimal selfCareScore;    // 自理能力得分（SQL别名：self_care_score）
    private BigDecimal mentalStatusScore; // 精神状态得分（SQL别名：mental_status_score）
    private BigDecimal estimatedTotalScore; // 预估总分（SQL别名：estimated_total_score）
    private String finalAbilityLevel;    // 能力最终等级（SQL别名：final_ability_level）
    private Date assessmentDate;         // 评估日期（SQL别名：assessment_date）

    // ======================== 8. 关联表：contract（合同表）字段 ========================
    private String contractName;         // 合同名称（SQL别名：contract_name）
    private String contractNo;           // 合同编号（SQL别名：contract_no）
    private Date contractStartDate;      // 合同开始时间（SQL别名：contract_start_date）
    private Date contractEndDate;        // 合同结束时间（SQL别名：contract_end_date）
    private String contractStatus;       // 合同状态（SQL别名：contract_status）
    private Date signTime;               // 签约时间（SQL别名：sign_time）
    private String contractFile;         // 合同文件路径（SQL别名：contract_file）
    private String partyCName;           // 丙方姓名（SQL别名：party_c_name）
    private String partyCPhone;          // 丙方联系电话（SQL别名：party_c_phone）

    private String nursingLevelName;          // 护理等级名称（新增，对应 nl.level_name）
    private BigDecimal nursingLevelFee;       // 护理等级对应费用（新增，对应 nl.nursing_fee）

    // ======================== 以下是所有字段的GETTER和SETTER方法（手动编写，缺一不可） ========================
    // 1. 主表字段的GETTER/SETTER
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public String getCheckInNo() { return checkInNo; }
    public void setCheckInNo(String checkInNo) { this.checkInNo = checkInNo; }

    public Long getElderlyId() { return elderlyId; }
    public void setElderlyId(Long elderlyId) { this.elderlyId = elderlyId; }

    public String getCheckInStartTime() { return checkInStartTime; }
    public void setCheckInStartTime(String checkInStartTime) { this.checkInStartTime = checkInStartTime; }

    public String getCheckInEndTime() { return checkInEndTime; }
    public void setCheckInEndTime(String checkInEndTime) { this.checkInEndTime = checkInEndTime; }

    public Long getCreator() { return creator; }
    public void setCreator(Long creator) { this.creator = creator; }

    public Date getCreateTime() { return createTime; }
    public void setCreateTime(Date createTime) { this.createTime = createTime; }

    public Long getNursingLevelId() { return nursingLevelId; }
    public void setNursingLevelId(Long nursingLevelId) { this.nursingLevelId = nursingLevelId; }
 public String getNursingLevelName() {
        return nursingLevelName;
    }
    public void setNursingLevelName(String nursingLevelName) {
        this.nursingLevelName = nursingLevelName;
    }
    public BigDecimal getNursingLevelFee() {
        return nursingLevelFee;
    }
    public void setNursingLevelFee(BigDecimal nursingLevelFee) {
        this.nursingLevelFee = nursingLevelFee;
    }
    public Long getBedId() { return bedId; }
    public void setBedId(Long bedId) { this.bedId = bedId; }

    public Date getFeeStartDate() { return feeStartDate; }
    public void setFeeStartDate(Date feeStartDate) { this.feeStartDate = feeStartDate; }

    public Date getFeeEndDate() { return feeEndDate; }
    public void setFeeEndDate(Date feeEndDate) { this.feeEndDate = feeEndDate; }

    public BigDecimal getDeposit() { return deposit; }
    public void setDeposit(BigDecimal deposit) { this.deposit = deposit; }

    public BigDecimal getNursingFee() { return nursingFee; }
    public void setNursingFee(BigDecimal nursingFee) { this.nursingFee = nursingFee; }

    public BigDecimal getBedFee() { return bedFee; }
    public void setBedFee(BigDecimal bedFee) { this.bedFee = bedFee; }

    public BigDecimal getOtherFee() { return otherFee; }
    public void setOtherFee(BigDecimal otherFee) { this.otherFee = otherFee; }

    public BigDecimal getMedicalInsurancePayment() { return medicalInsurancePayment; }
    public void setMedicalInsurancePayment(BigDecimal medicalInsurancePayment) { this.medicalInsurancePayment = medicalInsurancePayment; }

    public BigDecimal getGovernmentSubsidy() { return governmentSubsidy; }
    public void setGovernmentSubsidy(BigDecimal governmentSubsidy) { this.governmentSubsidy = governmentSubsidy; }

    public Long getBusinessId() { return businessId; }
    public void setBusinessId(Long businessId) { this.businessId = businessId; }

    public String getExtraField1() { return extraField1; }
    public void setExtraField1(String extraField1) { this.extraField1 = extraField1; }

    public String getExtraField2() { return extraField2; }
    public void setExtraField2(String extraField2) { this.extraField2 = extraField2; }

    // 2. 老人表字段的GETTER/SETTER
    public String getElderlyName() { return elderlyName; }
    public void setElderlyName(String elderlyName) { this.elderlyName = elderlyName; }

    public String getElderlyIdCard() { return elderlyIdCard; }
    public void setElderlyIdCard(String elderlyIdCard) { this.elderlyIdCard = elderlyIdCard; }

    // 3. 床位表字段的GETTER/SETTER
    public String getBedNo() { return bedNo; }
    public void setBedNo(String bedNo) { this.bedNo = bedNo; }

    // 4. 系统用户表字段的GETTER/SETTER
    public String getCreatorNickName() { return creatorNickName; }
    public void setCreatorNickName(String creatorNickName) { this.creatorNickName = creatorNickName; }

    // 5. 健康评估表字段的GETTER/SETTER
    public String getDiseaseDiagnosis() { return diseaseDiagnosis; }
    public void setDiseaseDiagnosis(String diseaseDiagnosis) { this.diseaseDiagnosis = diseaseDiagnosis; }

    public String getMedicationInfo() { return medicationInfo; }
    public void setMedicationInfo(String medicationInfo) { this.medicationInfo = medicationInfo; }

    public String getHaSelfCareAbility() { return haSelfCareAbility; }
    public void setHaSelfCareAbility(String haSelfCareAbility) { this.haSelfCareAbility = haSelfCareAbility; }

    public String getHaAssessmentStatus() { return haAssessmentStatus; }
    public void setHaAssessmentStatus(String haAssessmentStatus) { this.haAssessmentStatus = haAssessmentStatus; }

    public Date getHaCreateTime() { return haCreateTime; }
    public void setHaCreateTime(Date haCreateTime) { this.haCreateTime = haCreateTime; }

    public String getRiskFactors() { return riskFactors; }
    public void setRiskFactors(String riskFactors) { this.riskFactors = riskFactors; }

    public String getWoundCondition() { return woundCondition; }
    public void setWoundCondition(String woundCondition) { this.woundCondition = woundCondition; }

    // 6. 能力评估表字段的GETTER/SETTER
    public String getAaSelfCareAbility() { return aaSelfCareAbility; }
    public void setAaSelfCareAbility(String aaSelfCareAbility) { this.aaSelfCareAbility = aaSelfCareAbility; }

    public String getMentalStatus() { return mentalStatus; }
    public void setMentalStatus(String mentalStatus) { this.mentalStatus = mentalStatus; }

    public String getPerceptionSocialParticipation() { return perceptionSocialParticipation; }
    public void setPerceptionSocialParticipation(String perceptionSocialParticipation) { this.perceptionSocialParticipation = perceptionSocialParticipation; }

    public String getAaAssessmentStatus() { return aaAssessmentStatus; }
    public void setAaAssessmentStatus(String aaAssessmentStatus) { this.aaAssessmentStatus = aaAssessmentStatus; }

    // 7. 评估报告表字段的GETTER/SETTER
    public BigDecimal getSelfCareScore() { return selfCareScore; }
    public void setSelfCareScore(BigDecimal selfCareScore) { this.selfCareScore = selfCareScore; }

    public BigDecimal getMentalStatusScore() { return mentalStatusScore; }
    public void setMentalStatusScore(BigDecimal mentalStatusScore) { this.mentalStatusScore = mentalStatusScore; }

    public BigDecimal getEstimatedTotalScore() { return estimatedTotalScore; }
    public void setEstimatedTotalScore(BigDecimal estimatedTotalScore) { this.estimatedTotalScore = estimatedTotalScore; }

    public String getFinalAbilityLevel() { return finalAbilityLevel; }
    public void setFinalAbilityLevel(String finalAbilityLevel) { this.finalAbilityLevel = finalAbilityLevel; }

    public Date getAssessmentDate() { return assessmentDate; }
    public void setAssessmentDate(Date assessmentDate) { this.assessmentDate = assessmentDate; }

    // 8. 合同表字段的GETTER/SETTER
    public String getContractName() { return contractName; }
    public void setContractName(String contractName) { this.contractName = contractName; }

    public String getContractNo() { return contractNo; }
    public void setContractNo(String contractNo) { this.contractNo = contractNo; }

    public Date getContractStartDate() { return contractStartDate; }
    public void setContractStartDate(Date contractStartDate) { this.contractStartDate = contractStartDate; }

    public Date getContractEndDate() { return contractEndDate; }
    public void setContractEndDate(Date contractEndDate) { this.contractEndDate = contractEndDate; }

    public String getContractStatus() { return contractStatus; }
    public void setContractStatus(String contractStatus) { this.contractStatus = contractStatus; }

    public Date getSignTime() { return signTime; }
    public void setSignTime(Date signTime) { this.signTime = signTime; }

    public String getContractFile() { return contractFile; }
    public void setContractFile(String contractFile) { this.contractFile = contractFile; }

    public String getPartyCName() { return partyCName; }
    public void setPartyCName(String partyCName) { this.partyCName = partyCName; }

    public String getPartyCPhone() { return partyCPhone; }
    public void setPartyCPhone(String partyCPhone) { this.partyCPhone = partyCPhone; }
}
